package cn.tedu.knows.portal.controller;

import cn.tedu.knows.portal.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
//这个注解表示当前控制器有特殊情况时,可以运行这个类中的方法
//所谓特殊情况可以有多种定义,我们需要了解的就是发生异常的情况
@RestControllerAdvice
@Slf4j
public class ExceptionControllerAdvice {
    //下面的注解表示下面方法是专门处理异常的
    //Handler:处理者
    @ExceptionHandler
    //方法的参数类型是ServiceException
    //功能是当控制器发生 ServiceException 时自动运行的方法
    //方法名没有规定
    public String handlerServiceException(ServiceException e){
        log.error("业务异常",e);
        return e.getMessage();
    }
    @ExceptionHandler
    public String handlerException(Exception e){
        //这个方法处理除了ServiceException 之外的所有异常
        log.error("其他异常",e);
        return e.getMessage();
    }

}
